
export class DButility {
    /**
     * 格式化区县名称
     * @param name
     * @constructor
     */
    public static AreaFormatter(name) {
        switch (name) {
            case '西藏藏族自治区':
            case '西藏':
                name = '西藏自治区';
                break;
            case '新疆':
            case '新疆维吾尔族自治区':
            case '新疆自治区':
                name = '新疆维吾尔自治区';
                break;
            case '广西省':
            case '广西':
            case '广西壮族自治区':
                name = '广西壮族自治区';
                break;
            case '宁夏自治区':
            case '宁夏':
                name = '宁夏回族自治区';
                break;
            case '内蒙古自治区':
            case '内蒙古':
            case '内蒙':
                name = '内蒙古自治区';
                break;
        }
        return name;
    }

    /**
     * 检查经度是否合法
     * @param lon 经度
     * @returns 返回true|false
     */
    public static checkLon(lon) {
        var reg = /^(\-|\+)?\d+(\.\d+)?$/;
        if (reg.test(lon)) {
            if (parseFloat(lon) >= -180 && parseFloat(lon) <= 180) {
                return true;
            }
        }
        return false;
    };

    /**
     * 检查纬度是否合法
     * @param lat 维度
     * @returns 返回true|false
     */
    public static checkLat(lat) {
        var reg = /^(\-|\+)?\d+(\.\d+)?$/;
        if (reg.test(lat)) {
            if (parseFloat(lat) >= -90 && parseFloat(lat) <= 90) {
                return true;
            }
        }
        return false;
    };

    /**
     * 获取主键的hash值
     * @param strKey
     */
    public static getPrimaryKey(strKey){
        const num=this.hashCode(strKey);
        if (num<0){
            return "B_".concat(Math.abs(num).toString())
        }else{
            return "A_".concat(num.toString())
        }
    }
    /**
     * 转换为hashcode
     * @param strKey
     */
    private static hashCode(strKey) {
        var hash = 0;
        if (!this.isNull(strKey)) {
            for (var i = 0; i < strKey.length; i++) {
                hash = hash * 310 + strKey.charCodeAt(i);
                hash = this.intValue(hash);
            }
        }
        return hash;
    }

    private static isNull(str) {
        return str == null || str.value == "";
    }


    private static intValue(num) {
        var MAX_VALUE = 0x7fffffff;
        var MIN_VALUE = -0x80000000;
        if (num > MAX_VALUE || num < MIN_VALUE) {
            return num &= 0xFFFFFFFF;
        }
        return num;
    }



}